package LeetCode75;

/**
 * 1732. 找到最高海拔
 * 有一个自行车手打算进行一场公路骑行，这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。
 *
 * 给你一个长度为 n 的整数数组 gain ，其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差（0 <= i < n）。请你返回 最高点的海拔 。
 *
 *
 *
 * 示例 1：
 *
 * 输入：gain = [-5,1,5,0,-7]
 * 输出：1
 * 解释：海拔高度依次为 [0,-5,-4,1,1,-6] 。最高海拔为 1 。
 * 示例 2：
 *
 * 输入：gain = [-4,-3,-2,-1,4,3,2]
 * 输出：0
 * 解释：海拔高度依次为 [0,-4,-7,-9,-10,-6,-3,-1] 。最高海拔为 0 。
 *
 *
 * 提示：
 *
 * n == gain.length
 * 1 <= n <= 100
 * -100 <= gain[i] <= 100
 */
public class T1732_找到最高海拔 {

    //因为 int[i+1] - int[i]  = gain[i]
    //所以 int[i+1] = gain[i] + int[i]
    //     int[i] = gain[i-1]+int[i-1]
    //前一个数的原值+ 差值 =  当前的数的原值
    public int largestAltitude(int[] gain) {

        //前一个数
        int preNum = 0;
        //记录最大值 //第一数为0 最大值初始也为0
        int maxNum = 0;

        for (int i = 0; i < gain.length; i++) {
            //根据公式 当前的数 gain[i]+preNum;
            maxNum = Math.max(maxNum, gain[i] + preNum);
            //将这个值变成前一个数 进入下一个数的计算
            preNum = gain[i] + preNum;
        }

        return maxNum;

    }

}
